package com.rbac.admin.service.system;

import com.baomidou.mybatisplus.extension.service.IService;
import com.rbac.admin.entity.system.SystemUserDept;
import com.rbac.admin.vo.system.DeptVO;

import java.util.List;

/**
 * 用户部门关联服务接口
 *
 * @author rbac-admin
 * @since 2024-07-18
 */
public interface UserDeptService extends IService<SystemUserDept> {
    
    /**
     * 根据用户ID查询用户所属部门列表
     *
     * @param userId 用户ID
     * @return 部门列表
     */
    List<DeptVO> getDeptsByUserId(String userId);
    
    /**
     * 根据用户ID查询用户主部门
     *
     * @param userId 用户ID
     * @return 主部门信息
     */
    DeptVO getMainDeptByUserId(String userId);
    
    /**
     * 保存用户部门关联关系
     *
     * @param userId 用户ID
     * @param deptIds 部门ID列表
     * @param mainDeptId 主部门ID
     */
    void saveUserDepts(String userId, List<Integer> deptIds, Integer mainDeptId);
    
    /**
     * 更新用户部门关联关系
     *
     * @param userId 用户ID
     * @param deptIds 部门ID列表
     * @param mainDeptId 主部门ID
     */
    void updateUserDepts(String userId, List<Integer> deptIds, Integer mainDeptId);
    
    /**
     * 根据用户ID删除用户部门关联
     *
     * @param userId 用户ID
     */
    void deleteUserDeptsByUserId(String userId);
}